/**
 * @param {number[]} nums
 * @return {number[]}
 */
 var sortArray = function(nums) {
  let len = nums.length // 获得数组的长度
  for(let gap = Math.floor(len/2);gap > 0;gap = Math.floor(gap/2)){ // 初始增量是长度的二分之一  一直遍历到增量是1 也就是大于0  每一次增量减半
    for(let i = gap;i < nums.length;i++){ // 从gap增量开始判断 因为第一个默认是已经排好序的 i不断增加 直到最后一个
      let j = i // 记录初始的下标 不直接使用i是因为后面需要修改这个i
      let current = nums[i] // 记录当前的值
      while(j - gap >= 0 && current < nums[j-gap]){ // 当这个下标减去增量后的下标大于等于0 并且当前的值还小于当前的下标-增量后的下标代表的值  就交换
        nums[j] = nums[j - gap]
        j = j - gap // 然后让j变成前面的额值
      }
      // while循环结束之后 就代表当前的j值就是要插入的位置
      nums[j] = current
    }
  }
  return nums
};
